package com.bosicen.crm.dao.sysmanage;
/**
 * 企业信息数据操作类
 */
import java.util.List;


import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Component;
import com.bosicen.crm.dao.HibernateDao;
import com.bosicen.crm.dao.entity.Company;
import com.bosicen.crm.tools.Page;

@Component("companyDao")
@SuppressWarnings("unchecked")
public class CompanyDao extends HibernateDao<Company, Integer> {

	/****
	 * 查询列表
	 * @param id
	 * @return
	 */
	
	public List<Company> findCompanyList(){
		return this.getSession().createQuery(" from Company  order by id asc").list();
	}
	
	/****
	 * 查询列表
	 * @param id
	 * @return
	 */
	
	public Page findCompany4Page(Page page,Company company){
		String sql = " from Company ",wheresql = " where id <>0 ";
		if(company != null){
			if(StringUtils.isNotBlank(company.getCompanynumber())){
				wheresql += " and companynumber='"+company.getCompanynumber()+"' ";
			}
			if(StringUtils.isNotBlank(company.getName())){
				wheresql += " and name like '%"+company.getName()+"%' ";
			}
			if(StringUtils.isNotBlank(company.getAddress())){
				wheresql += " and address like '%"+company.getAddress()+"'";
			}
		}
		sql = sql + wheresql + " order by id desc ";
		return this.findPage(page,sql);
	}
	
	/**
	 * 按ID查询
	 * @param id
	 * @return
	 */
	public Company findCompanyById(int id){
		return (Company)this.getSession().createQuery(" from Company where id=?").setParameter(0, id).uniqueResult();
		//return this.get(id);
	}
	
	/***
	 * 删除
	 * @param c
	 */
	public void delCompany(Company c){
		//this.delete(c.getId());
		this.getSession().createQuery("delete from  Company od where od.id=?").setParameter(0,c.getId()).executeUpdate();
	}
	
	/**
	 * 保存
	 * 使用 hibernate 3 的 merge 方法. session.merge(newDetail)即可，它会在 session 缓存中找到持久化对象，把新对象的属性赋过去，再保存原session中的持久化对象。
	 * 如果在session或数据库中没有的对象，用merge方法的话，它也能够帮你把记录 insert 到表中，相当于 save 方法。
	 */
	public void saveOrUpdate(Company company){
		if(company.getId()>0)
			company.setCreatedate(this.get(company.getId()).getCreatedate());
		this.getSession().merge(company);
	}
	
}
